﻿using Abp.Application.Services.Dto;
using Mt.Site.Application.Dto;
using Mt.Site.Application.Taxonomys.Dto;
using Mt.Site.Application.Taxonomys.FrontDto;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Mt.Site.Application.Taxonomys
{
    public interface ITaxonomyAppService:IBackEndAppService
    {       
        Task<PagedResultDto<PagedTaxonomyOut>> GetPagedTaxonomyAsync(PagedTaxonomyInput input);

        Task CreateTaxonomyAsync(CreateTaxonomyInput input);

        Task UpdateTaxonomyAsync(UpdateTaxonomyInput input);

        Task DeleteTaxonomyAsync(EntityIdListDto  input);
        Task SetTaxonomyStatus(SetStatusInput input);
        MaxOrderInfoOut GetMaxTaxonomyOrderInfo();
        Task SetNewTaxonomyOrderInfoAsync(NewSortNumberInput input);
        Task SwapTaxonomyObjectSortAsync(SwapSortNumberInput input);

        Task<List<TaxonomyListOut>> GetTaxonomyListAsync();


        Task<List<TaxonomyItemDataOut>> GetTaxonomyItemTree(TaxonomyItemListInput input);
        Task<TaxonomyItemDataOut> CreateTaxonomyItemAsync(CreateTaxonomyItemInput input);

        Task<TaxonomyItemDataOut> UpdateTaxonomyItemAsync(UpdateTaxonomyItemInput input);

        Task DeleteTaxonomyItemAsync(EntityIdListDto  input);

        Task MoveTaxonomyItemAsync(MoveItemInput input);

        Task<TaxonomyItemDataOut> SetTaxonomyItemStatus(SetTaxonomyItemStatusInput input);

        Task<ListResultDto<TaxonomyItemDataOut>> UpTaxonomyItemSort(EntityDto<Guid> input);
        Task<ListResultDto<TaxonomyItemDataOut>> DownTaxonomyItemSort(EntityDto<Guid> input);

        Task<List<TaxonomyFrontItem>> GetTaxonomyCollectionsAsync(EntityDto<string> input);

        Task<List<TaxonomyItemLevel1Dto>> GetTaxonomyItemLevel1(EntityDto<string> input);

        Task<List<TaxomonyItemNext>> GetTaxonomyLevelNext(EntityDto<Guid> input);
    }
}
